#!/bin/bash

: <<'END'  
author：xxx
date：2024.xx.xx
parameter：$1 合法ip
describe：输入一个合法ip，转换成二进制形式表示
function：【功能描述】
	1、输入一个合法ip
	2、使用awk将ip按.拆分成4段
	3、每一段都进行10进制转2进制输出
	4、拼接2进制ip进行输出
END

  
# 检查参数数量  
if [ "$#" -ne 1 ]; then  
    echo "Usage: $0 <ip_address>"  
    exit 1  
fi  
  
ip_address=$1
  
# 使用awk将IP地址的每个部分转换为二进制  
binary_ip=$(echo $ip_address | awk -F. '{  
    for(i=1; i<=NF; i++) {  
        # 转换当前字段为二进制  
        bin=""  
        dec=$i  
        while (dec > 0) {  
            bin = (dec % 2) bin  
            dec = int(dec / 2)  
        }  
        # 如果二进制数不足8位，则在前面补零  
        bin_length = length(bin)  
        for (j=1; j<=8-bin_length; j++) {  
            bin = "0" bin  
        }  
        printf "%s.", bin  
    }  
    print "" # 输出换行符，以结束行  
}')
  
# 移除字符串末尾的点号  
binary_ip=${binary_ip%.}  
  
echo "Binary representation of $ip_address is: $binary_ip"
